Software-prototype developers typically need to rapidly design, develop and alter software code to meet changing requirements. The lack of software tools to assist software-prototype developers in a rapid, application-development environment is a driving force behind the creation of reusable components. Reusable components allow for the packaging of specific functionality into easy to use, abstract, reusable, standardized code.
For example, reusable standardized code can be developed with an object-oriented language, such as the Java programming language. The Java programming language comprises classes and objects. A class is a collection of data and methods (i.e., procedures) that operate on that data. An object is a specific embodiment of a particular class as defined by specific values of the data.
Classes can be combined to create packages. Classes can be selected for a particular package because the classes have related functionality and/or can synergistically assist the software developer in developing a particular type of software. For example, Java provides a set of packages to create graphical user interfaces (GUIs). These packages are collectively known as the Abstract Windows Toolkit (AWT). More specifically, one of the Java AWT packages includes such classes as the Checkbox, the Canvas, the Dialog, the Scrollbar, and the Button. When discussing software for a GUI, the terms "GUI components" can be used to refer to both the class and/or the associated object. In other words, the GUI component "Checkbox" can refer to the Checkbox class and/or to a particular checkbox embodiment.
The GUI components of known software tools and packages, however, do not address all situations needed for a GUI. For example, the GUI components of the known software tools and packages often are not designed to easily represent certain types of physical equipment.